package com.sunshine.design.singleton;

/**
 * 单例模式
 *
 * @author weihong
 * @date 2021/1/7 9:21
 */
public class Singleton {

    /**
     * 让构造函数为 private，这样该类就不会被实例化
     */
    private Singleton() {
    }


    /**
     * 饿汉式 ， 创建 Singleton 的一个对象
     */
    private static Singleton singleton = new Singleton();

    /**
     * 懒汉式 ， 第一次调用才初始化，避免内存浪费。
     */
    //private static Singleton singleton;

    /**
     * 获取唯一可用的对象
     *
     * 加锁 synchronized 保证线程安全
     *
     * @return
     */
    public static synchronized Singleton getInstance() {
        if (null == singleton) {
            singleton = new Singleton();
        }
        return singleton;
    }

    public void showMessage(){
        System.out.println("Hello World!");
    }
}
